const fs = require('fs');
const path = require('path');

// 创建请求路由
const router = require('koa-router')();
// 返回静态文件
const send = require('koa-send');

// 接口处理
const api = require('./api');

// 配置路由项
router.get('/', async ctx => {
  ctx.message = 'file very ok!';
  await send(ctx, './public/index.html', {
    maxAge: 300000,
  })
})

// 一个简单的api接口
router.post('/api', async ctx => {
  if (ctx.request.body.apiName) {
    try {
      ctx.body = api(ctx);
    }
    catch(err) {
      console.log(err)
      ctx.body = {
        message: err.message,
        code: -1,
      }
    }
  } else {
    ctx.body = {
      message: '未传apiName',
      code: -1,
    }
  }
  ctx.message = 'ajax very ok!';
})

// 实现一个简单的静态服务器
// router.get('/public/:fileName', async ctx => {
//   console.log('public----- ', ctx.params);
//   await send(ctx, `./public/${ctx.params.fileName}`, {
//     maxAge: 300000,
//   })
// })

router.post('/upload', async ctx => {
  console.log('ctx.request.files', ctx.request.files.file.name);
  // 获取上传文件，单个文件，若为多个文件，此处的 file 会变为数组
  const file = ctx.request.files.file;
  // 创建可读流
  const reader = fs.createReadStream(file.path);
  // 存放文件路径，相对于本目录
  const filePath = `/upload/${file.name}`;
  // 创建可写流
  const writer = fs.createWriteStream(path.join(__dirname, `../public${filePath}`));
  // 可读流通过管道写入可写流
  reader.pipe(writer);
  ctx.body = {
    status: 'success',
    path: filePath,
  }
  ctx.message = 'upload very ok!';
})

module.exports = router;
